home *** CD-ROM | disk | FTP | other *** search
-
- title - Animated "o" system program
-
- vectors segment at 0
- ORG 8h*4
- timer label dword
- ORG 16h*4
- kbio label dword
- vectors ends
-
- cseg segment para
- assume cs:cseg
- org 100h
-
- begin: jmp init_vectors ; go initialize vectors
-
-
- ;-------------------------------;
- ; ;
- ; data area for this program ;
- ; ;
- ;-------------------------------;
-
- last_stat db 0ffh
- old_timer dd ?
- old_kbio dd ?
- timer_tick db 0
- in_kbio db 0
- which db 0
- csize db 10h
- o_table:
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00110000b
- db 01100000b
- db 11000000b
- db 11000110b
- db 11000110b
- db 01101100b
- db 00111000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00111000b
- db 01101100b
- db 11000000b
- db 11000000b
- db 11000000b
- db 01101100b
- db 00111000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00111000b
- db 01101100b
- db 11000110b
- db 11000110b
- db 11000000b
- db 01100000b
- db 00110000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00111000b
- db 01101100b
- db 11000110b
- db 11000110b
- db 11000110b
- db 01000100b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00111000b
- db 01101100b
- db 11000110b
- db 11000110b
- db 00000110b
- db 00001100b
- db 00011000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00111000b
- db 01101100b
- db 00000110b
- db 00000110b
- db 00000110b
- db 01101100b
- db 00111000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00011000b
- db 00001100b
- db 00000110b
- db 11000110b
- db 11000110b
- db 01101100b
- db 00111000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 01000100b
- db 11000110b
- db 11000110b
- db 11000110b
- db 01101100b
- db 00111000b
- db 00000000b
- db 00000000b
- db 00000000b
- db 00000000b
-
-
- intercept proc far
- pushf
- cmp timer_tick,0
- je dont_do_this
- cmp in_kbio,1
- ja dont_do_this
- cmp ah,1
- je do_this
- cmp ah,11h
- je do_this
- dont_do_this:
- jmp go_kbio1
- do_this:
- mov timer_tick,0
- inc in_kbio
- push es
- push ds
- push si
- push di
- push bp
- push ax
- push bx
- push cx
- push dx
-
- mov ax,040h
- mov es,ax
-
- mov al,es:[84h]
- cmp al,24
- jne go_kbio
- mov al,es:[49h]
- cmp al,3
- jne go_kbio
-
- mov dx,es:[63h]
- add dl,6
- ; in al,dx
- ; test al,8
- ; jz updating
- ; test last_stat,8
- ; jz now
- ; jmp go_kbio
- updating:
- nop
- nop
- cli
- in al,dx
- test al,8
- jnz now
- sti
- jmp updating
- now:
- ; mov last_stat,al
- push dx
- mov al,which
- inc al
- and al,7
- mov which,al
- mul csize
- mov bp,offset o_table
- add bp,ax
- mov ax,cs
- mov es,ax
- mov ax,01100h
- mov bh,0eh ; Character height
- mov bl,0
- mov cx,1
- mov dx,06fh
- int 10h
- pop dx
- ; in al,dx
- ; mov last_stat,al
- go_kbio:
- pop dx
- pop cx
- pop bx
- pop ax
- pop bp
- pop di
- pop si
- pop ds
- pop es
- dec in_kbio
- go_kbio1:
- popf
- jmp old_kbio
- intercept endp
-
- new_timer proc far
- mov timer_tick,1
- jmp old_timer
- new_timer endp
-
- init_vectors proc near
- assume ds:vectors
- mov ax,vectors
- mov ds,ax
-
- cli
- mov ax,word ptr timer
- mov word ptr old_timer,ax
- mov ax,word ptr timer[2]
- mov word ptr old_timer[2],ax
- mov ax, offset new_timer
- mov word ptr timer,ax
- mov word ptr timer[2],cs
-
- mov ax,word ptr kbio
- mov word ptr old_kbio,ax
- mov ax,word ptr kbio[2]
- mov word ptr old_kbio[2],ax
- mov ax, offset intercept
- mov word ptr kbio,ax
- mov word ptr kbio[2],cs
- sti
-
- mov dx,offset init_vectors ; end of resident portion
- int 27h
- init_vectors endp
-
- cseg ends
-
- END begin
-